JS循环跳出方法(filter,map,some,find,every等) 您所在的位置:网站首页 JS里面if return JS循环跳出方法(filter,map,some,find,every等)

JS循环跳出方法(filter,map,some,find,every等)

2023-09-05 21:17| 来源: 网络整理| 查看: 265

前言 数组的原生方法-MDN

数组方法很多,有时候我们需要跳出循环以提高代码的执行效率。

本文为粘贴别人文章(文末有传送门),但以下方法均测试过,如测试有不同结果欢迎留言

结论总结

1 for循环 成功 跳出本次循环 不合法 不合法 不合法 √2 Array.forEach() 不合法 不合法 跳出本次循环 跳出本次循环 跳出本次循环 ×3 for...in 成功 跳出本次循环 不合法 不合法 不合法 √4 Array.map() 不合法 不合法 跳出本次循环 跳出本次循环 跳出本次循环 ×5 Array.some() 不合法 不合法 跳出本次循环 成功 跳出本次循环 √6 Array.every() 不合法 不合法 成功 跳出本次循环 成功 √7 Array.filter() 不合法 不合法 跳出本次循环 跳出本次循环 跳出本次循环 ×

forEach、map和filter目前我不知有什么办法停止当前遍历,表格(图片)中提到的都是可以跳出本次循环的 ,

2020.10.16 10:20 更新:

抛出错误可以中断 Foreach 循环,注意是跳出这个循环,如下

[1,2,3].forEach(i => { if(i==2) throw "中断循环"; console.log(i) }) //1 //Uncaught 中断循环

把 forEach 换成 filter 与 map 结果依旧同上

另外

filter: 主要是过滤数组的作用,里面加条件过滤就行了,跳出循环个人认为没有意义。map: 主要是重新加工每个数组项的作用,如果需要跳过某些元素,那你就应该考虑 map 是不是用错了(考虑filter,或者for。for循环是比forEach更有优势,尽管优势及其微小)【(❁´◡`❁)】 for循环 var arr = ['a', 'b', 'c', 'd', 'e']; var show = []; for (var i = 0; i break;// ['a', 'b'] 成功跳出循环 // continue;// ['a', 'b', 'd', 'e'] 只能跳出本次循环 // return;// Uncaught SyntaxError: Illegal return statement // return true;// Uncaught SyntaxError: Illegal return statement // return false;// Uncaught SyntaxError: Illegal return statement } show.push(arr[i]); } Array.forEach() var arr = ['a', 'b', 'c', 'd', 'e']; var show = []; arr.forEach((item, index) => { if (index === 2) { // break;// Uncaught SyntaxError: Illegal break statement // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement // return;// ["a", "b", "d", "e"] 只能跳出本次循环 // return true;// ["a", "b", "d", "e"] 只能跳出本次循环 // return false;// ['a', 'b', 'd', 'e'] 只能跳出本次循环 } show.push(item); }) for…in… var arr = ['a', 'b', 'c', 'd', 'e']; var show = []; for (var item in arr) { if (item === '2') { break;// ["a", "b"] 跳出循环成功 // continue;// ["a", "b", "d", "e"] 只能跳出本次循环 // return;// Uncaught SyntaxError: Illegal return statement // return true;// Uncaught SyntaxError: Illegal return statement // return false;// Uncaught SyntaxError: Illegal return statement } show.push(arr[item]); }

Array.map()

var arr = ['a', 'b', 'c', 'd', 'e']; var show = []; arr.map((item, index) => { if (index === 2) { // break;// Uncaught SyntaxError: Illegal break statement // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement // return;// ["a", "b", "d", "e"] 只能跳出本次循环 // return true;// ["a", "b", "d", "e"] 只能跳出本次循环 // return false;// ["a", "b", "d", "e"] 只能跳出本次循环 } show.push(item); }) Array.some() var arr = ['a', 'b', 'c', 'd', 'e']; var show = []; arr.some((item, index) => { if (index === 2) { // break;// Uncaught SyntaxError: Illegal break statement // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement // return;// ["a", "b", "d", "e"] 只能跳出本次循环 return true;// ["a", "b"] 成功跳出循环 // return false;// ["a", "b", "d", "e"] 只能跳出本次循环 } show.push(item); }) Array.every() var arr = ['a', 'b', 'c', 'd', 'e']; var show = []; arr.every((item, index) => { if (index === 2) { // break;// Uncaught SyntaxError: Illegal break statement // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement // return;// ["a", "b"] 成功跳出循环 // return true;// ["a", "b", "d", "e"] 只能跳出本次循环 return false;// ["a", "b"] 成功跳出循环 } return show.push(item); })

some 与 every 的 返回值均为布尔值,some 与 every 不同,some 遍历项中一个为真全部即为真,而 every 遍历项中全部为真才行。some 遍历中返回 true 才会退出执行,而every 则需要返回 false 才会退出执行。

Array.filter() var arr = ['a', 'b', 'c', 'd', 'e']; var show = []; arr.filter((item, index) => { if (index === 2) { // break;// Uncaught SyntaxError: Illegal break statement // continue;// Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement // return;// ["a", "b", "d", "e"] 只能跳出本次循环 // return true;// ["a", "b", "d", "e"] 只能跳出本次循环 return false;// ["a", "b", "d", "e"] 只能跳出本次循环 } show.push(item); })

以上。

【思否-原文链接】起飞~~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有